home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / phagexsources.lha / source / FindConfig.s < prev    next >
Text File  |  1993-08-20  |  8KB  |  464 lines

  1. ; BUG! BUG! BUG! Theres a prob with the Memory identifier code! I'll fixit
  2. ; soon!  But u may peek and play 4 the mo.
  3.  
  4. ; This Proggo just checks the current machines status/spec. Proccesor (680x0)
  5. ; Mem Types (Chip, Slow, Fast).  Active and Accessible Disk drives, and
  6. ; wether the machine is AGA or not, everything works except Memory type.
  7.  
  8.     Opt    c-
  9.     Section    "Find Configuration",Code_c
  10.  
  11.     IncDir    Df1:
  12.  
  13. Start    Movem.l    d0-d7/a0-a6,-(sp) 
  14.     Bsr    KillSys+$20    ; Kill SYS AgaSeg
  15.     
  16.     Lea    ProcStat(pc),a5    ; Get Processor Status
  17.     Move.w    d0,00(a5)    ; Processor Type
  18.     Move.w    d1,02(a5)    ; Bit 0 = AGA if 1
  19.     Move.l    a0,04(a5)    ; a0 = GFX Base
  20.     Move.l    a1,08(a5)    ; a1 = Vector Base Register
  21.     
  22.     Lea    DiagScreen(pc),a0
  23.     Lea    DiagPiccy(pc),a1; Text Screen
  24.     Move.l    a1,(a0)    ; Set Screen
  25.     
  26.     Bsr    SetDiagBPLS    ; Set BPLS
  27.     
  28.     Lea    DiagCopper(pc),a0 
  29.     Lea    HardWare,a6      
  30.     Move.l    a0,Cop1Lc(a6)      
  31.     Move.w    #$83c0,DMACon(a6)
  32.  
  33.     Moveq    #0,d0    ; Setup Code
  34.     Bsr    TrackDisk+$20    ; Find Active Drives
  35.     Lea    ActiveDrives(pc),a5
  36.     Or.w    #1,d0    ; Set Drive 0
  37.     Move.w    d0,(a5)    ; (oops)
  38.     
  39.     Bsr    ShowStats    ; Show Other Status INFO
  40.     
  41. Loop    Btst    #6,$Bfe001
  42.     Bne    Loop
  43.  
  44.     Bsr    KillSys+$22
  45.     Movem.l    (sp)+,d0-d7/a0-a6 
  46.     Moveq    #0,d0      
  47.     Rts
  48.  
  49. SetDiagBPLS    Lea    DiagBPLS(pc),a0
  50.     Move.l    DiagScreen(pc),a1
  51.     Move.l    a1,d0
  52.     Move.w    d0,6(a0)
  53.     Swap    d0
  54.     Move.w    d0,2(a0)
  55.     Rts
  56.  
  57. CheckRam    Moveq    #0,d5    ; Zoikes! Bugs!
  58.     Move.l    #"Psy!",$80000    ; Dont take notes from this
  59.     Cmp.l    #"Psy!",$00000    ; shambles!
  60.     Beq    CheckSlowRam    ; Ooh, Shagratt would have
  61.     Bset    #0,d5    ; a heart attack if he
  62. CheckSlowRam    Move.w    $C00002,d0    ; saw this!
  63.     Move.w    $Dff002,d1
  64.     Cmp.w    d0,d1
  65.     Beq    CheckFast    
  66.     Bset    #1,d5    
  67. CheckFast    Move.l    #"Psx!",$200000
  68.     Cmp.l    #"Psx!",$200000
  69.     Bne    NoFastRam    
  70.     Bset    #2,d5    
  71. NoFastRam    Lea    MemStat(pc),a5
  72.     Move.w    d5,(a5)
  73.     Move.w    d5,$110
  74.     Rts
  75.     
  76. ShowStats    Lea    TextXPos(pc),a5    ; Write Status Info
  77.     Move.l    #$00020078,(a5)
  78.     
  79.     Lea    ProcessorText(pc),a6
  80.     Bsr    WriteText
  81.     
  82.     Move.w    ProcStat(pc),d0
  83.     Cmpi.w    #0,d0
  84.     Beq    Get000Text
  85.     Cmpi.w    #1,d0
  86.     Beq    Get010Text
  87.     Cmpi.w    #2,d0
  88.     Beq    Get020Text
  89.     Cmpi.w    #3,d0
  90.     Beq    Get030Text
  91.     Cmpi.w    #4,d0
  92.     Beq    Get040Text
  93.     
  94.     Lea    UnknownText(pc),a6
  95.     Bra    PutProcText
  96.     
  97. Get000Text    Lea    Proc000Text(pc),a6
  98.     Bra    PutProcText
  99. Get010Text    Lea    Proc010Text(pc),a6
  100.     Bra    PutProcText
  101. Get020Text    Lea    Proc020Text(pc),a6
  102.     Bra    PutProcText
  103. Get030Text    Lea    Proc030Text(pc),a6
  104.     Bra    PutProcText
  105. Get040Text    Lea    Proc040Text(pc),a6
  106.  
  107. PutProcText    Bsr    WriteText    ; Show Processor Type
  108.     
  109.     Lea    TextXPos(pc),a5
  110.     Move.w    #2,00(a5)
  111.     Add.w    #40*12,02(a5)
  112.  
  113.     Bsr    CheckRam    
  114.     Lea    MemText(pc),a6
  115.     Bsr    WriteText        
  116.     Move.w    MemStat(pc),d0
  117.     Btst    #0,d0
  118.     Beq    TrySlow    
  119.     Lea    ChipRamText(pc),a6
  120.     Bsr    WriteText    
  121. TrySlow    Move.w    MemStat(pc),d0
  122.     Btst    #1,d0
  123.     Beq    TryFast    
  124.     Lea    SlowRamText(pc),a6
  125.     Bsr    WriteText    
  126. TryFast    Move.w    MemStat(pc),d0
  127.     Btst    #2,d0
  128.     Beq    NoMem
  129.     
  130.     Lea    FastRamText(pc),a6
  131.     Bsr    WriteText    ; Show Ram Types
  132.  
  133. NoMem    Lea    TextXPos(pc),a5
  134.     Move.w    #2,00(a5)
  135.     Add.w    #40*12,02(a5)
  136.     
  137.     Lea    DrivesText(pc),a6
  138.     Bsr    WriteText    
  139.     Moveq    #0,d7
  140.     Moveq    #48,d6    
  141. ShowDrive    Move.w    ActiveDrives(pc),d2
  142.     Btst    d7,d2    ; Show Available Disk
  143.     Beq    NoDrive    ; Drives.
  144.     
  145.     Moveq    #0,d0
  146.     Move.b    #"D",d0
  147.     Bsr    TextPlace
  148.     Moveq    #0,d0
  149.     Move.b    #"f",d0
  150.     Bsr    TextPlace
  151.     Move.l    d6,d0
  152.     Bsr    TextPlace
  153.     Moveq    #0,d0
  154.     Move.b    #":",d0
  155.     Bsr    TextPlace
  156.     Moveq    #0,d0
  157.     Move.b    #" ",d0
  158.     Bsr    TextPlace
  159.     
  160. NoDrive    Addq    #1,d6
  161.     Addq    #1,d7
  162.     Cmp.b    #4,d7
  163.     Bne    ShowDrive    
  164.  
  165.     Lea    TextXPos(pc),a5
  166.     Move.w    #2,00(a5)
  167.     Add.w    #40*12,02(a5)
  168.  
  169.     Move.w    AGAStat(pc),d0
  170.     Tst.w    d0
  171.     Beq    NoAGA    
  172.     Lea    AGAText(pc),a6
  173.     Bra    WriteChipText
  174. NoAGA    Lea    ECSText(pc),a6
  175. WriteChipText    Bsr    WriteText    ; Show if AGA or NOT!
  176.  
  177.     Rts
  178.  
  179. WriteText    Moveq    #0,d0    ; Text Writer
  180.     Move.b    (a6)+,d0
  181.     Cmp.b    #0,d0
  182.     Beq    EndText
  183.     Bsr    TextPlace
  184.     Bra    WriteText
  185. EndText    Rts
  186.  
  187. ShowVar    Move.l    #0,d6    ; Show a Decimal Number in
  188.     Move.l    d0,d6    ; text
  189.     
  190.     Move.l    #10000,d1
  191.     Bsr    DoDiagDivs
  192. DoThousands    Move.l    #1000,d1
  193.     Bsr    DoDiagDivs
  194. DoHundreds    Move.l    #100,d1
  195.     Bsr    DoDiagDivs
  196. DoTens    Move.l    #10,d1
  197.     Bsr    DoDiagDivs
  198. DoUnits    Move.l    #1,d1
  199.     Bsr    DoDiagDivs
  200.     
  201.     Rts
  202.     
  203. DoDiagDivs    Divs    d1,d6    
  204.     Move.w    d6,d0
  205.     And.w    #$f,d0
  206.     Add.w    #48,d0
  207.     Bsr    TextPlace
  208.     Move.w    #0,d6
  209.     Swap    d6
  210.     Rts    
  211.     
  212. TextModulo    = (40*1)
  213.  
  214. TextPlace    Move.l    DiagScreen(pc),a0; Write Text from font onto
  215.     Lea    Font(pc),a1    ; Screen..
  216.     Sub.w    #32,d0
  217.     Add.w    d0,d0
  218.     Add.w    d0,d0
  219.     Add.w    d0,d0
  220.     Moveq    #0,d1
  221.     Move.w    d0,d1
  222.     Add.l    d1,a1
  223.     
  224.     Moveq    #0,d0
  225.     Moveq    #0,d1
  226.     Move.w    TextXPos(pc),d0
  227.     Move.w    TextYPos(pc),d1
  228.     
  229.     Add.l    d0,a0
  230.     Add.l    d1,a0
  231.         
  232.     Move.b    00(a1),00(a0)
  233.     Move.b    01(a1),TextModulo(a0)
  234.     Move.b    02(a1),TextModulo*2(a0)
  235.     Move.b    03(a1),TextModulo*3(a0)
  236.     Move.b    04(a1),TextModulo*4(a0)
  237.     Move.b    05(a1),TextModulo*5(a0)
  238.     Move.b    06(a1),TextModulo*6(a0)
  239.     Move.b    07(a1),TextModulo*7(a0)
  240.     Lea    TextXPos(pc),a4
  241.     Add.w    #1,00(a4)
  242.     Cmp.w    #40,00(a4)
  243.     Bne    NotEndLine    
  244.     Move.w    #0,00(a4)
  245.     Add.w    #1,02(a4)
  246. NotEndLine    Rts
  247.  
  248. ProcessorText    Dc.b    "Processor Type:-  ",0
  249.     Even
  250.     
  251. Proc000Text    Dc.b    "68000 ",0
  252. Proc010Text    Dc.b    "68010 ",0
  253. Proc020Text    Dc.b    "68020 ",0
  254. Proc030Text    Dc.b    "68030 ",0
  255. Proc040Text    Dc.b    "68040 ",0
  256.  
  257. UnknownText    Dc.b    "Unknown",0
  258.     Even
  259.  
  260. ECSText    Dc.b    "Standard Chipset Found",0
  261.     Even
  262.     
  263. AGAText    Dc.b    "AGA Chipset Found",0
  264.     Even
  265.  
  266. MemText    Dc.b    "Memory Types  :-  ",0
  267.     Even
  268.     
  269. ChipRamText    Dc.b    "Meg Chip ",0
  270. SlowRamText    Dc.b    "Slow ",0
  271. FastRamText    Dc.b    "Fast ",0
  272.     Even
  273.  
  274. DrivesText    Dc.b    "Active Drives :-  ",0
  275.     Even
  276.  
  277. DiagScreen    Dc.l    0
  278. TextXPos    Dc.w    0
  279. TextYPos    Dc.w    0
  280. TextPtr    Dc.l    0
  281.  
  282. ActiveDrives    Dc.w    0
  283.  
  284. MemStat    Dc.w    0
  285. ProcStat    Dc.w    0
  286. AGAStat    Dc.w    0
  287. GFXBase    Dc.l    0
  288. VBRBase    Dc.l    0
  289.  
  290. Cmv    Macro
  291.     Dc.w    \2,\1
  292.     EndM
  293.     
  294. Cwt    Macro
  295.     Dc.w    (\1*$100)+$01,$fffe
  296.     EndM    
  297.  
  298. Pal    Macro
  299.     Dc.w    $ffe1,$fffe
  300.     EndM    
  301.  
  302. EndCop    Macro
  303.     Dc.w    $ffff,$fffe
  304.     EndM    
  305.  
  306. DiagCopper    Cwt    $15
  307.     Cmv    $0200,BplCon0
  308.     Cmv    $00bb,BplCon1
  309.     Cmv    $000a,BplCon2
  310.     Cmv    $0034,DdfStrt
  311.     Cmv    $00c8,DdfStop
  312.     Cmv    $1681,DiwStrt
  313.     Cmv    $36c1,DiwStop
  314.     Cmv    $0,BplMod1
  315.     Cmv    $0,BplMod2    
  316.     Cwt    $25
  317.     Cmv    $0000,Color00
  318.     Cmv    $0fff,Color01    
  319. DiagBPLS    Cmv    $c,BplPt0h
  320.     Cmv    $0,BplPt0l
  321.     Cwt    $37
  322.     Cmv    $f00,Color00
  323.     Cwt    $38
  324.     Cmv    $200,Color00
  325.     Cmv    $1200,BplCon0
  326.     
  327.     Cwt    $88
  328.     Cmv    $f00,Color00
  329.     Cmv    $0200,BplCon0
  330.     Cwt    $89
  331.     Cmv    $000,Color00
  332.     EndCop
  333.     
  334. DiagPiccy    Ds.l    80*10
  335.  
  336. Font    Incbin    Bitmaps/Font.Raw
  337. KillSys    Incbin    CodeSegments/KillSysAGA-Seg
  338. TrackDisk    Incbin    CodeSegments/NuTrakkerFINAL-Seg
  339.  
  340. ****Custom Chip Registers****
  341.  
  342. Hardware    = $Dff000
  343.  
  344. ;Control Registers
  345.  
  346. Dmaconr    = $002
  347. Vposr    = $004
  348. Vhposr    = $006
  349. Joy0dat    = $00A
  350. Joy1dat    = $00C
  351. Clxdat    = $00E
  352. Intenar    = $01C
  353. Intereqr    = $01E
  354. Copcon    = $02E
  355.  
  356. ;Blitter Registers
  357.  
  358. Bltcon0    = $040
  359. Bltcon1    = $042
  360. Bltafwm    = $044
  361. Bltalwm    = $046
  362. Bltcpth    = $048
  363. Bltcptl    = $04A
  364. Bltbpth    = $04C
  365. Bltbptl    = $04E
  366. Bltapth    = $050
  367. Bltaptl    = $052
  368. Bltdpth    = $054
  369. Bltdptl    = $056
  370. Bltsize    = $058
  371. Bltcmod    = $060
  372. Bltbmod    = $062
  373. Bltamod    = $064
  374. Bltdmod    = $066
  375. Bltcdat    = $070
  376. Bltbdat    = $072
  377. Bltadat    = $074
  378.  
  379. ;Copper Registers
  380.  
  381. Cop1lc    = $080
  382. Cop1lch    = $080
  383. Cop1lcl    = $082
  384. Cop2lc    = $084
  385. Cop2lch    = $084
  386. Cop2lcl    = $086
  387. Copjmp1    = $088
  388. Copjmp2    = $08A
  389. Diwstrt    = $08E
  390. Diwstop    = $090
  391. Ddfstrt    = $092
  392. Ddfstop    = $094
  393. Dmacon    = $096
  394. Clxcon    = $098
  395. Intena    = $09A
  396. Intreq    = $09C
  397.  
  398. ;BitPlane Registers 
  399.  
  400. BplCon0    = $100
  401. BplCon1    = $102
  402. BplCon2    = $104
  403. BplMod1    = $108
  404. BplMod2    = $10a
  405.  
  406. BplPt0h    = $0e0
  407. BplPt0l    = $0e2
  408. BplPt1h    = $0e4
  409. BplPt1l    = $0e6
  410. BplPt2h    = $0e8
  411. BplPt2l    = $0ea
  412. BplPt3h    = $0ec
  413. BplPt3l    = $0ee
  414. BplPt4h    = $0f0
  415. BplPt4l    = $0f2
  416. BplPt5h    = $0f4
  417. BplPt5l    = $0f6
  418.  
  419. ;Colour Registers
  420.  
  421. Color00    = $180
  422. Color01    = $182
  423. Color02    = $184
  424. Color03    = $186
  425. Color04    = $188
  426. Color05    = $18a
  427. Color06    = $18c
  428. Color07    = $18e
  429. Color08    = $190
  430. Color09    = $192
  431. Color10    = $194
  432. Color11    = $196
  433. Color12    = $198
  434. Color13     = $19a
  435. Color14     = $19c
  436. Color15     = $19e
  437. Color16     = $1a0
  438. Color17     = $1a2
  439. Color18     = $1a4
  440. Color19     = $1a6
  441. Color20     = $1a8
  442. Color21     = $1aa
  443. Color22     = $1ac
  444. Color23     = $1ae
  445. Color24     = $1b0
  446. Color25     = $1b2
  447. Color26     = $1b4
  448. Color27     = $1b6
  449. Color28     = $1b8
  450. Color29     = $1ba
  451. Color30     = $1bc
  452. Color31     = $1be
  453.  
  454. EcsNop    = $1fe
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.